package com.huarui.permission.service;

import java.util.List;

import com.huarui.permission.dataobject.Action;
import com.huarui.permission.dataobject.Permission;
import com.huarui.permission.dataobject.Role;

public interface PermissionService {
	
	static public final int RESULT_HAS_PERMISSION=1;
	static public final int  RESULT_NO_PERMISSION=0;

	/**
	 * 判断当前用户对某个权限项是否有权限
	 * @param permissionId
	 * @return 0 无权限   1 有权限
	 */
	int  hasPermission(Integer  permissionId);
	
	
	/**
	 * 判断当前用户对某个权限项是否有权限
	 * @param permissionId
	 * @return 0 无权限   1 有权限
	 */
//	int  hasPermission(String permissionName);
	
	
	/**
	 * 判断某个用户对某个权限项是否有权限
	 * @param permissionId
	 * @return 0 无权限   1 有权限
	 */
	int hasPermission(Integer employeeId ,  Integer permissionId);
	
	
/*
	*//**
	 * 判断某个用户对某个权限项是否有权限
	 * @param permissionId
	 * @return 0 无权限   1 有权限
	 *//*
	int hasPermission(Integer userId ,  String permissionName);*/
	
	
	/**
	 * 
	 * @param userId
	 * @return
	 */
	List<Integer>  getRoleIds(Integer  userId);
	
	
	/**
	 * 获取当前用户的角色列表
	 * @return
	 */
	List<Integer>  getRoleIds();
	
	
	
	/**
	 * 从roleTemplate和roleTemplatePermission中创建默认角色集合与分配默认权限
	 * @param companyId
	 * @return
	 */
	boolean  createDefaultRolesAndPermissions();
	
	boolean createDefaultRolesAndPermissions(final Integer companyId , final Integer companyType);
	
	public boolean createDefaultPermissions(final Integer companyId,final Integer donateType);
	/**
	 * 清空某个公司得角色和以及分配得权限
	 * @param companyId
	 * @return
	 */
	boolean resume2default(Integer companyId);
	/**xzz
	 * 获取这个公司下所有的角色
	 * @param companyId
	 * @return
	 */
	List<Role> grantCompanyAllRole(Integer companyId);
	/**xzz
	 * 把该员工增加为管理员
	 * @param employeeId
	 * @param companyId
	 */
	
	void addCompanyAdminRole(Integer employeeId,Integer companyId);
	
	/**
	 * 分配给匿名用户的permission列表
	 * @return
	 * @deprecated
	 */
	List<Permission>  getPermissionsGranted2AnonymousUser();
	
	
	/**
	 * 分配给已登录无归属公司用户的permission列表
	 * @return
	 */
	List<Permission>  getPermissionsGranted2LoginedUser();

	

	/**
	 * 分配给已登录无归属公司用户的permission列表
	 * @return
	 */
	List< Action >   getActionsGranted2LoginedUser();

//	Action findAction(String action, String method);
	
	/**
	 * 获取给所有公司的免费套餐
	 * @return
	 */
	List<Permission>  getFreePermissionIdsGranted2AllCompany();
	
	/**
	 * 给认证公司的免费套餐
	 * @return
	 */
	List<Integer>  getFreePermissionIdsGranted2AuthenticationCompany();


	/**
	 * add by sunpeng.thx
	 * @return
	 */
	public List<Integer> getCurrentUserPermissionIds();


	/**
	 * 赠送免费套餐给新注册公司
	 * @param companyId
	 */
	public void donateFreePackage2NewRegistCompany(Integer companyId);


	/**
	 * 赠送免费套餐给新认证公司
	 * @param companyId
	 */
	public void donateFreePackage2NewAuthCompany(Integer companyId);
	
	public void donateFreePackage2NewAuthCompany(Integer companyId,Integer donateType);
	
	public List<Integer> getServiceNewAuthCompany(Integer companyId,Integer donateType);
	
	/**已认证公司购买套餐后分配和角色权限
 * 
 * @param companyId
 * @param packageId
 */
	public void  assignPackage2AuthCompany(Integer companyId , Integer  packageId);
	/**
	 * 根据公司id和服务id删除rolePermission记录
	 * @param companyId
	 * @param serviceId
	 * @author shengyao xu
	 */
	public void deleteRolePermissionWithComIdAndServiceId(Integer companyId,Integer serviceId);
	/**
	 * 根据公司id和service id增加rolePermission记录
	 * @param companyId
	 * @param serviceId
	 * @author  shengyao xu
	 */
	public void insertRolePermissionWithComIdAndServiceId(Integer companyId,Integer serviceId);
	
}
